분포의 대표값

분포(distribution)은 집합 전체의 특성을 나타내는 것이므로 히스토그램 등의 시각화 또는 분포 함수 등의 수식을 사용하는 것이 일반적이다. 하지만 전체적인 특성을 나타낼 수 있는 몇 개의 대표값을 구할 수 있다면 분포의 특성을 빠르게 파악한다거나 두 개의 분포를 서로 비교하는데 도움이 될 수 있다.

가장 먼저 생각할 수 있는 것은 분포를 하나의 숫자로 대표할 수 있는 수치, 즉 대푯값이다.

대푯값으로 널리 쓰이는 것들은 다음과 같은 것들이 있다.

  • 평균
  • 기댓값
  • 중간값

샘플 평균

우리가 보통 평균(mean, average)라고 할 때 의미하는 것은 샘플 평균(sample mean, sample average)을 말한다.

샘플(sample)은 정확히는 이미 가지고 있는 자료 값의 집합이 어떤 확률 모형 또는 모집합으로 부터 생성된 것이라는 가정하에 부르는 용어이지만 유한한 갯수의 자료 값의 집합으로 부터 다음과 같은 식을 사용하여 계산한 값을 샘플 평균이라고 한다.

$$ m = \dfrac{1}{N}\sum_{i=1}^{N} x_i $$

이 식에서 $N$는 자료의 갯수, $i = 1, \cdots, N$는 자료의 순서 혹은 인덱스(index)를 뜻하고, $x_i$는 $i$번째 자료의 값을 뜻한다.

이번에는 자료가 어떤 확률 분포를 따르는 확률 변수 $X$의 샘플이라고 가정하자. 이러한 경우에는 확률 변수 위에 bar를 추가하여 $\bar{X}$와 같이 샘플 평균을 나타내기도 한다. $X_i$는 $i$번째로 실현된 샘플을 의미한다.

$$ \bar{X} = \dfrac{1}{N}\sum_{i=1}^{N} X_i $$

샘플링을 한 번 해서 나온 자료 값의 집합에서 구한 샘플 평균 $\bar{X}$이 있을 때, 샘플링을 다시 해서 또 다른 자료 값의 집합을 구하면 이 자료는 먼저 자료와 다르기 때문에 여기에서 구한 샘플 평균은 앞서 구한 샘플 평균과 값이 달라진다.

이렇게 샘플링 할 때마다 샘플 평균이 예측할 수 없는 값이 나오기 때문에 샘플 평균 $\bar{X}$도 하나의 확률 변수라고 할 수 있다. 물론 이 확률 변수는 원래의 확률 변수와는 다른 분포를 가진다.

확률 분포의 기댓값

만일 확률 변수가 따르고 있는 확률 모형, 정확히는 확률 밀도 함수를 알고 있을 경우에는 다음과 같은 수식을 사용하여 이론적인 평균을 구할 수 있다. 이러한 이론적 평균을 확률 변수의 기댓값(expectation)이라고 한다. 확률 모형이 존재한다는 것이 문맥상으로 확실한 경우에는 단순히 평균(mean)이라고 말하기도 한다.

확률 변수의 기대값을 구하는 연산자(operator)는 영어 Expection의 첫글자를 사용하여 $\operatorname{E}[\cdot]$로 표기한다. 기대값은 그리스 문자 $\mu$로 표기한다.

$$ \mu = \operatorname{E}[X] = \int_{-\infty}^{\infty} x f(x) dx $$

이산 확률 변수의 경우에는 다음과 같이 확률 질량 함수를 사용하여 기댓값을 구한다.

$$ \mu = \operatorname{E}[X] = \sum xf(x) $$

기댓값의 성질

기댓값은 확률 모형이라는 수식을 사용한 것이므로 다음과 같은 성질을 가진다는 것을 수학적으로 증명할 수 있다. 복잡한 수식을 가지는 확률 모형의 경우에는 이러한 성질을 이용하면 기댓값을 계산하는데 도움이 된다.

  • 랜덤 변수가 아닌 고정된 값 $c$에 대해 $$ \operatorname{E}[c] = c$$

  • 선형성 $$ \begin{align} \operatorname{E}[cX] &= c \operatorname{E}[X] \\ \operatorname{E}[X + Y] &= \operatorname{E}[X] + \operatorname{E}[Y] \end{align} $$

기댓값과 샘플 평균의 관계

앞서 샘플 평균도 하나의 확률 변수라고 했다. 따라서 샘플 평균에도 기댓값이 존재한다. 또한 샘플 평균의 기댓값은 원래의 확률 변수의 기댓값과 일치함을 수학적으로 증명할 수 있다.

$$ \operatorname{E}[ \bar{X} ] = \operatorname{E}[X] $$

(증명)

$$ \begin{eqnarray} \operatorname{E}[\bar{X}] &=& \operatorname{E}\left[\dfrac{1}{N}\sum_{1}^{N}X_i \right] \\ &=& \dfrac{1}{N}\sum_{1}^{N}\operatorname{E}[X_i] \\ &=& \dfrac{1}{N}\sum_{1}^{N}\operatorname{E}[X] \\ &=& \dfrac{1}{N} N \operatorname{E}[X] \\ &=& \operatorname{E}[X] \\ \end{eqnarray} $$

중앙값

중앙값(median)은 전체 자료를 크기별로 정렬하였을 때 가장 중앙에 위치하게 되는 값을 말한다. 중앙값에도 샘플 중앙값과 확률 분포로부터 계산한 이론적 중앙값이 존재한다.

샘플 중앙값은 몇 개의 정의가 존재하지만 많이 쓰이는 정의는 다음과 같다.

전체 샘플의 갯수가 $N$인 경우,

  • $N$이 홀수이면: 중간값은 $(n + 1)/2$번째 샘플의 값
  • $N$이 짝수이면: 중간값은 $n/2$번째 샘플의 값과 $n/2 + 1$번째 샘플의 값의 평균

확률 분포로부터 이론적 중앙값은 그 값보다 큰 값이 나올 확률과 작은 값이 나올 확률이 동일하게 0.5이여야 하므로 다음과 같이 누적 확률 분포 $F(x)$에서 계산할 수 있다.

$$ \text{median} = F^{-1}(0.5) $$$$ 0.5 = F(\text{median}) $$

최빈값

최빈값(mode)은 직역하자면 가장 빈번하게 나올 수 있는 값을 말한다. 하지만 연속 확률 분포인 경우에는 어느 값에 대해서나 특정한 값이 나올 확률은 0(zero)이므로 다음과 같이 확률 밀도 함수의 값이 가장 큰 확률 변수의 값으로 정의한다. 즉, 확률 밀도 함수의 최댓값의 위치이다.

$$ \text{mode} = \arg \max_x f(x) $$

이산 샘플 자료에 대해서는 최빈값을 구할 수 있으나 연속 샘플 자료는 최빈값이 존재하지 않거나 의미가 없기 때문에 히스토그램과 같이 구간을 분할하여 각 구간의 대표값으로 카테고리화하여 최빈값을 구해야 한다.

기댓값, 중앙값, 최빈값의 비교

확률 분포 즉, 확률 밀도 함수가 대칭인 경우에는 기댓값, 중앙값, 최빈값이 모두 같다. 그러나 분포가 어느 한쪽으로 찌그러진(skewed) 경우에는 다음 그림과 같이 달라질 수 있다.

계산량으로 비교하면 기댓값이 가장 계산하기 쉽고 중앙값은 계산량이 기댓값보다 증가하며 최빈값은 최적화 과정을 통해서만 구할 수 있으므로 계산량이 가장 많으며 오차가 크다.

그러나 기댓값은 이상값(outliner)이나 한쪽으로 찌그러진 상태에 큰 영향을 받지만 중앙값이나 최빈값은 이에 대한 영향이 적다는 장점이 있다.

Python을 사용한 계산

Python에서는 다음과 같은 numpy 함수를 사용하여 계산할 수 있다.


In [1]:
np.random.seed(0)
x = np.random.normal(size=1000)

In [2]:
np.mean(x), np.median(x)


Out[2]:
(-0.045256707490195384, -0.058028034799627745)

In [3]:
ns, bins = np.histogram(x, bins=np.linspace(-10, 10, 20))

In [5]:
ns


Out[5]:
array([  0,   0,   0,   0,   0,   0,   6,  54, 247, 426, 213,  52,   2,
         0,   0,   0,   0,   0,   0], dtype=int64)

In [6]:
bins


Out[6]:
array([-10.        ,  -8.94736842,  -7.89473684,  -6.84210526,
        -5.78947368,  -4.73684211,  -3.68421053,  -2.63157895,
        -1.57894737,  -0.52631579,   0.52631579,   1.57894737,
         2.63157895,   3.68421053,   4.73684211,   5.78947368,
         6.84210526,   7.89473684,   8.94736842,  10.        ])

In [4]:
M = np.argmax(ns)
bins[M], bins[M+1]


Out[4]:
(-0.52631578947368496, 0.52631578947368318)

In [7]:
M


Out[7]:
9